package com.stu.utils;

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

/**
 * jsoup 解析网页，抓取信息
 *  具体一些使用可以参见 main 方法
 * @author Administrator
 *
 */
public class JsoupUtils implements LoggerUtils{

	/**
	 * 获取 url 网页的全部内容
	 * @param url http://... 或者 https://...
	 * @return Document
	 * @throws IOException
	 */
	public static Document getDocument(String url) throws IOException{
		try {
			return Jsoup.connect(url).get();
		} catch (Exception e) {
			logger.error(e);
			System.err.println(e);
		}
		return null;
	}
	
	/**
	 * 根据属性名和值 获取元素集合
	 * @param url http://... 或者 https://...
	 * @param key 属性名
	 * @param value 属性值 
	 * @return 元素集合
	 * @throws IOException
	 */
	public static Elements getElementsByAttributeValue(String url,String key,String value) throws IOException{
		return getDocument(url).getElementsByAttributeValue(key,value);
	}
	
	/**
	 * 通过标签名获取元素集合
	 * @param element 在element中查找标签名
	 * @param tagName 标签名
	 * @return 元素集合
	 */
	public static Elements getElementsByTag(Element element,String tagName){
		return element.getElementsByTag(tagName);
	}
	/**
	 * 通过标签名获取元素集合
	 * @param document 在document中查找标签名
	 * @param tagName 标签名
	 * @return 元素集合
	 */
	public static Elements getElementsByTag(Document document,String tagName){
		return document.getElementsByTag(tagName);
	}
	
	public static void main(String[] args) throws IOException {
		// -- getDocument
//	    Document doc2 = getDocument("http://www.baidu.com");
//        System.out.println(doc2.title());
//        System.out.println();
        
        // --getElementsByAttributeValue 获取博客上的文章标题和链接
//        try {
//            Elements ListDiv = getElementsByAttributeValue("http://www.cnblogs.com/zyw-205520/", "class", "postTitle");
//            for (Element element :ListDiv) {
//                Elements links = element.getElementsByTag("a");
//                for (Element link : links) {
//                    String linkHref = link.attr("href");
//                    String linkText = link.text().trim();
//                    System.out.println(linkHref);
//                    System.out.println(linkText);
//                }
//            }
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
        
        // -- getElementsByTag
//        try {
//        	Elements ListDiv = getElementsByAttributeValue("http://www.cnblogs.com/zyw-205520/", "class", "postTitle");
//        	for (Element element :ListDiv) {
//        		Elements links = getElementsByTag(element,"a"); // 
//        		for (Element link : links) {
//        			String linkHref = link.attr("href");
//        			String linkText = link.text().trim();
//        			System.out.println(linkHref);
//        			System.out.println(linkText);
//        		}
//        	}
//        } catch (IOException e) {
//        	e.printStackTrace();
//        }
		// 获取 博客内容
		Document doc;
		try {
			doc = Jsoup.connect("http://www.cnblogs.com/zyw-205520/p/3762954.html").get();
			Elements ListDiv = doc.getElementsByAttributeValue("class", "postBody");
			for (Element element : ListDiv) {
				System.out.println(element.text());
				// System.out.println(element.html());
			}
		} catch (IOException e) {
			logger.error(e);
			e.printStackTrace();
		}
		
	}
}
